package com.api.shopapi.common;

import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;

import com.vivo.push.sdk.notofication.Message;
import com.vivo.push.sdk.notofication.Result;
import com.vivo.push.sdk.notofication.TargetMessage;
import com.vivo.push.sdk.server.Sender;

public class Vivo {

    public static final String ALIAS = "ALIAS";

    public static final int APP_ID = 123;

    public static final String APP_KEY = "APP_KEY";

    public static final String APP_SECRET = "APP_SECRET";

    public static final String AUTH_TOKEN = "authToken";

    // ��Ҫ���͵��û�ע��id
    public static final String REG_ID = "";


    public Vivo() {

    }


    public static String getUUID() {
        return java.util.UUID.randomUUID().toString().toUpperCase().replaceAll("-", "");
    }

    // ����
    public static void singeSend() throws Exception {
        //Sender sender = new Sender(APP_SECRET, AUTH_TOKEN);
        Sender sender = new Sender(APP_SECRET);
        sender.initPool(20, 10);// �������ӳز�������ѡ��
        Message singleMessage = new Message.Builder().build();// ����������Ϣ��
        Result result = sender.sendSingle(singleMessage);// ���͵�������
        result.getResult();// ��ȡ���������ص�״̬�룬0�ɹ�����0ʧ��
        result.getDesc();// ��ȡ���������صĵ��������������
        result.getTaskId();// �絥�������ͳɹ�������ø���������Ϣ�������ţ���taskId
    }
    public static void singeSend2(String title) throws Exception {
        //Sender sender = new Sender(APP_SECRET, AUTH_TOKEN);
        Sender sender = new Sender(APP_SECRET);
        sender.initPool(20, 10);// �������ӳز�������ѡ��
        Message singleMessage = new Message.Builder().build();// ����������Ϣ��
        Result result = sender.sendSingle(singleMessage);// ���͵�������
        result.getResult();// ��ȡ���������ص�״̬�룬0�ɹ�����0ʧ��
        result.getDesc();// ��ȡ���������صĵ��������������
        result.getTaskId();// �絥�������ͳɹ�������ø���������Ϣ�������ţ���taskId
    }


    // ����Ⱥ����Ϣ
    public static void saveListPayload() throws Exception {
        //Sender sender = new Sender(APP_SECRET, AUTH_TOKEN);
        Sender sender = new Sender(APP_SECRET);
        sender.initPool(20, 10);// �������ӳز�������ѡ��
        Message saveList = new Message.Builder().build();// ����Ҫ���������������Ϣ��
        Result result = sender.saveListPayLoad(saveList);// ���ͱ���Ⱥ����Ϣ����
        result.getResult();// ��ȡ���������ص�״̬�룬0�ɹ�����0ʧ��
        result.getDesc();// ��ȡ���������صĵ��������������
        result.getTaskId();// �������ͳɹ�������ø�����Ϣ�������ţ���taskId
    }

    // ���������û�
    public static void listSend() throws Exception {
        //Sender sender = new Sender(APP_SECRET, AUTH_TOKEN);
        Sender sender = new Sender(APP_SECRET);
        sender.initPool(20, 10);// �������ӳز�������ѡ��
        Set<String> regid = new HashSet<>();// �������������û�Ⱥ
        regid.add("taskId1");
        regid.add("taskId2");
        TargetMessage targetMessage = new TargetMessage.Builder().build();// �����������͵���Ϣ��
        Result result = sender.sendToList(targetMessage);// �������͸��û�
        result.getResult();// ��ȡ���������ص�״̬�룬0�ɹ�����0ʧ��
        result.getDesc();// ��ȡ���������صĵ��������������
    }

    // ȫ������
    public static void allSend() throws Exception {
        //Sender sender = new Sender(APP_SECRET, AUTH_TOKEN);
        Sender sender = new Sender(APP_SECRET);
        sender.initPool(20, 10);// �������ӳز�������ѡ��
        Message allSend = new Message.Builder().build();// ����Ҫȫ�����͵���Ϣ��
        Result result = sender.sendToAll(allSend);// ����ȫ��������Ϣ����
        result.getResult();// ��ȡ���������ص�״̬�룬0�ɹ�����0ʧ��
        result.getDesc();// ��ȡ���������صĵ��������������
        result.getTaskId();// �������ͳɹ�������ø�����Ϣ�������ţ���taskId
    }

    // ֪ͨ����Ϣ��
    public static Message buildMessage() throws Exception {
        Map<String, String> map = new HashMap<String, String>();
        Message message = new Message.Builder()
                .regId("12345678901234567890123")
                // ������������Ϣ����Ҫ
                .alias(ALIAS)
                // ������������Ϣ����Ҫ
                .notifyType(1).title("YOUR_TITLE").content("YOUR_CONTENT").timeToLive(1000).skipType(2)
                .skipContent("http://www.vivo.com").networkType(-1).clientCustomMap(map).extra("http://www.vivo.com", "vivo")
                .requestId("1234567890123456").build();
        return message;
    }

    // ���������û���Ϣ��
    public static TargetMessage buildTargetMessage() throws Exception {
        Set<String> regids = new HashSet<>();
        regids.add("12345678901234567890123");
        regids.add("12345678901234567890321");
        Set<String> aliases = new HashSet<>();
        aliases.add("ALIAS1");
        aliases.add("ALIAS2");
        TargetMessage targetMessage = new TargetMessage.Builder().regIds(regids).aliases(aliases).requestId("1234567890123456")
                .taskId("123456789012345678").build();
        return targetMessage;
    }

    // ��ȡ��Ϣ���͵�ͳ��ֵ
    public static void testGetStatistics() throws Exception {
        //Sender sender = new Sender(APP_SECRET, AUTH_TOKEN);
        Sender sender = new Sender(APP_SECRET);
        sender.initPool(20, 10);// �������ӳز�������ѡ��
        Set<String> taskIds = new HashSet<>();
        taskIds.add("123456789012345678");
        taskIds.add("123456789087654321");
        Result result = sender.getStatistics(taskIds);
        result.getResult();// ��ȡ���������ص�״̬�룬0�ɹ�����0ʧ��
        result.getDesc();// ��ȡ���������صĵ��������������
        result.getStatistics();// �������ͳɹ�������ø���taskId��Ӧ��ͳ������
    }

    // ��Ȩ
    public static void testGetToken() throws Exception {
        Sender sender = new Sender(APP_SECRET);// ʵ����Sender
        sender.initPool(20, 10);// �������ӳز�������ѡ��
        Result result = sender.getToken(APP_ID, APP_KEY);// ���ͼ�Ȩ����
        result.getResult();// ��ȡ���������ص�״̬�룬0�ɹ�����0ʧ��
        result.getDesc();// ��ȡ���������صĵ��������������
        result.getAuthToken();// ���Ȩ�����ͳɹ������authToken
    }
}
